package com.itheima.tlias84.config;

import com.itheima.tlias84.Interceptor.LoginInterceptor;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**
 * spring配置类 ：一般用来配置拦截器，跨域配置等等配置
 * @Configuration 是配置类的特化注解 组合了@Component
 *
 *
 * 过滤器（Filter）与拦截器（Interceptor）的区别？
 * 相同点：执行都在Controller（servlet）之前
 * 不同点：
 *      技术提供方：过滤器->servlet  拦截器->Spring
 *      执行顺序：先执行过滤器 后执行拦截器
 *      拦截力度：过滤器过滤粒度粗  ->编码转换，时间格式转换
 *              拦截器拦截粒度细  ->登录认证，接口日志记录
 *
 *
 *
 *      如果继承 extends WebMvcConfigurationSupport springboot会自己处理时间
 *      如果想使用自定义的时间格式 implements WebMvcConfigurer
 */
//@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Resource
    LoginInterceptor loginInterceptor;

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(loginInterceptor)
                //添加拦截路径
                .addPathPatterns("/**")
                //排除登录路径
                .excludePathPatterns("/login");
    }
}
